package main

// channel 放数据过程: 先阻塞进程 1 获取锁， 2 等到消费者消费 3 释放锁
// 如果直接向没有缓冲区的channel 放数据 当没有已经运行的消费者来消费数据的时候，则锁无法释放抛出deadlock 死锁错误
func main() {
	var msg = make(chan int) // 没有缓冲区的channel 当有缓冲区时，会把数据放到缓冲区
	msg <- 1                 //当你放数据的时候 这时候会阻塞，阻塞前会获取一把锁，这把锁什么时候释放，造成卡死
	// 因为上面放入数据后就会阻塞进程，所以下面的消费代码就不会运行到，所以想避免得把消费者放到加数据前
	go func(msg chan int) {
		<-msg
	}(msg)
}
